
REG_FUNC("tindex", diag_func_tindex, "f:");
REG_FUNC("integer", diag_func_integer, "i:v");
REG_FUNC("real", diag_func_real, "f:v");
REG_FUNC("imag", diag_func_imag, "f:c");
REG_FUNC("string", diag_func_string, "s:v");
REG_FUNC("array", diag_func_createarray,"a:v*");
REG_FUNC("element", diag_func_arrayelement,"v:ai");
REG_FUNC("bool", diag_func_bool,"b:v");
REG_FUNC("complex", diag_func_complex, "c:ff");
REG_FUNC("getnumtsteps", diag_func_getnumtsteps, "i:");
REG_FUNC("getelapsedtime", diag_func_gettime,"f:i");
REG_FUNC("getprevtimestep", diag_func_getprevtimestep, "f:i");
REG_FUNC("gettimestep", diag_func_gettimestep, "f:");
REG_FUNC("settimestep", diag_func_settimestep, "b:f");
REG_FUNC("getData", diag_func_getSsysdata,  "c:vbi*");
REG_FUNC("setdiagout", diag_func_setdiagout, "b:s*");
REG_FUNC("setmodelstdout", diag_func_setmodelstdout, "b:s");
REG_FUNC("setmodelstdmsg", diag_func_setmodelstdmsg, "b:s");
REG_FUNC("rewindtime", diag_func_rewindtime, "b:i");
REG_FUNC("resetdiagout", diag_func_resetdiagout, "b:");
REG_FUNC("print", diag_func_print, "i:*");
REG_FUNC("fopen", diag_func_fopen, "h:ss");
REG_FUNC("getstdout", diag_func_getstdout, "h:");
REG_FUNC("fclose", diag_func_fclose, "i:h*");
REG_FUNC("fprintf", diag_func_fprintf, "i:hs*");
REG_FUNC("printf", diag_func_printf, "i:s*");
REG_FUNC("getmaxdigits", diag_func_getmaxdigits,"i:f*");
REG_FUNC("system", diag_func_system, "i:s");
REG_FUNC("getk", diag_func_getk, "f:i");
REG_FUNC("getnk", diag_func_getnk, "i:i");
REG_FUNC("getnumks", diag_func_getnumks, "i:");
REG_FUNC("getdk", diag_func_getdk, "f:i");
REG_FUNC("getQ", diag_func_getQ, "f:iii");
REG_FUNC("getA", diag_func_getA,"f:iiiiii");
REG_FUNC("getQI", diag_func_getQI,"f:iii");
REG_FUNC("bessel1", diag_func_bessel1, "f:f");
REG_FUNC("flush", diag_func_flush, "b:h*");
REG_FUNC("fflush", diag_func_flush, "b:h");
REG_FUNC("readenv", diag_func_readenv,"s:s");
REG_FUNC("eval", diag_func_eval,"v:s");
REG_FUNC("error", diag_func_error,"b:s*");
REG_FUNC("abort", diag_func_abort,"b:i");
REG_FUNC("end", diag_func_end,"b:");
REG_FUNC("GETPROFILEMAXSIZE", diag_func_getprofilemaxsize, "i:");
REG_FUNC("printdefinedmacros", diag_func_print_model_macros,"b:h");
REG_FUNC("printdefinedprofiles", diag_func_print_model_profiles,"b:h");
REG_FUNC("getstaticdata", diag_func_get_static_data,"c:iiiiiiiiiiii");
REG_FUNC("setstaticdata", diag_func_set_static_data,"b:iciiiiiiiiiii");
REG_FUNC("setdebugio", diag_func_set_debug_io,"b:s");
REG_FUNC("closedebugio", diag_func_close_debug_io,"b:");
// netcdf API
REG_FUNC("ncopen", diag_func_ncopen, "h:si");
REG_FUNC("ncwritedims", diag_func_ncwritedims, "b:h");
REG_FUNC("ncwriteprofiles", diag_func_ncwriteprofiles,"b:h");
REG_FUNC("ncclose", diag_func_ncclose,"b:h");
REG_FUNC("ncsetmissingvalue", diag_func_ncsetmissingvalue,"b:f");
REG_FUNC("ncwritePhi", diag_func_ncwritePhi,"b:hii");
REG_FUNC("ncwriteG", diag_func_ncwriteG,"b:hii");
REG_FUNC("ncaddtime", diag_func_ncaddtime,"b:hf");
REG_FUNC("ncgetmaxtime", diag_func_ncgetmaxtime, "f:h");
REG_FUNC("save_model_state", diag_func_save_model_state,"b:ss");
REG_FUNC("isValid", diag_func_is_handle_valid,"b:h");
